package com.liunian;

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

public class MyCompletableFuture {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        /**
         * 有了 CompletableFuture 这个类就可以获得异步线程(子线程)的数据和返回结果或者过程中的结果，并可以在主线程中阻塞等待其完成
         */
        CompletableFuture<Integer> completableFuture = new CompletableFuture<>();

        new Thread(() -> {
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            int i = 8;
            completableFuture.complete(i);
        }).start();
        // 如何在子线程中，获取这个8 --> CompletableFuture
        // get()方法是阻塞的方法。可以传入时间。
        Integer integer = completableFuture.get();
        System.out.println(integer);
    }
}
